php 排除周末与节假日程序实例代码

您所在的位置:网站首页 闹钟 跳过法定节假日 苹果 php 排除周末与节假日程序实例代码

php 排除周末与节假日程序实例代码

2023-09-18 19:16| 来源: 网络整理| 查看: 265

date_default_timezone_set('prc');/*** 求取从某日起经过一定天数后的日期,* 排除周六周日和节假日* @param $start       开始日期* @param $offset      经过天数* @param $exception 例外的节假日* @param $allow       允许的日期(预留参数)* @return*  examples:输入(2010-06-25,5,''),得到2010-07-02*/function getendday( $start='now', $offset=0, $exception='', $allow='' ){    //先计算不排除周六周日及节假日的结果    $starttime = strtotime($start);    $endtime = $starttime + $offset * 24 * 3600;    $end = date('y-m-d', $endtime);    //然后计算周六周日引起的偏移    $weekday = date('n', $starttime);//得到星期值:1-7    $remain = $offset % 7;    $newoffset = 2 * ($offset - $remain) / 7;//每一周需重新计算两天    if( $remain > 0 ){//周余凑整        $tmp = $weekday + $remain;        if( $tmp >= 7 ){            $newoffset += 2;        }else if( $tmp == 6 ){            $newoffset += 1;        }        //考虑当前为周六周日的情况        if( $weekday == 6 ){            $newoffset -= 1;        }else if( $weekday == 7 ){            $newoffset -= 2;        }    }    //再计算节假日引起的偏移    if( is_array($exception) ){//多个节假日        foreach ($exception as $day){            $tmp_time = strtotime($day);            if( $tmp_time>$starttime && $tmp_time                $weekday_t = date('n', $tmp_time);                if($weekday_t         #echo "[{$start} -> {$offset}] = [{$end} -> {$newoffset}]"."n";        return getendday($end,$newoffset,$exception,$allow);    }else{        return $end;    }}/*** 暴力循环方法*/function getendday2( $start='now', $offset=0, $exception='', $allow='' ){    $starttime = strtotime($start);    $tmptime = $starttime + 24*3600;        while( $offset > 0 ){        $weekday = date('n', $tmptime);        $tmpday = date('y-m-d', $tmptime);        $bfd = false;//是否节假日        if(is_array($exception)){            $bfd = in_array($tmpday,$exception);        }else{            $bfd = ($exception==$tmpday);        }        if( $weekday



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3